<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        

        // 实现从小到大的排序

        // 思路：
        //    拿第一个值和第二个值进行比较     第一个比第二个大    交换位置   
        //    拿第二个值和第三个值进行比较     第二个比第三个大    交换位置  
        //       3         4
        //    。。。
        //    最大的数将会排在最后面
        
        var arr = [3,2,6,4,1,22,5] ;

        // 第一轮
        for(var i = 0 ; i < arr.length - 1 ; i++) {    // 最后一个数不跟后面的比
            // 当前这个数和后面的这个数进行比较
            if(arr[i] > arr[i + 1]) {
                // 前面的值比后面的大
                // 交换位置
                var temp = arr[i] ;
                arr[i] = arr[i + 1] ;
                arr[i + 1] = temp ;
            }
        }

        console.log(arr) ;
    


        // 跑一下程序
        // i=0    3和2比较  交换     2 3 6 4 1 22 5 
        // i=1    3和6比较  不交换   2 3 6 4 1 22 5 
        // i=2    6和4比较  交换     2 3 4 6 1 22 5
        // i=3    6和1比较  交换     2 3 4 1 6 22 5
        // i=4    6和22比较  不交换  2 3 4 1 6 22 5
        // i=5    22和5比较  交换    2 3 4 1 6 5 22
        // i=6    22没人比

        // 经过第一轮比较和交换之后，会得到最大的值在最后面     22




        // 第二轮

        for(var i = 0 ; i < arr.length - 1 - 1; i++) {    // 最后一个数不跟后面的比    经过第一轮比较，最大的已经拍好了，没必要再比较
            // 当前这个数和后面的这个数进行比较
            if(arr[i] > arr[i + 1]) {
                // 前面的值比后面的大
                // 交换位置
                var temp = arr[i] ;
                arr[i] = arr[i + 1] ;
                arr[i + 1] = temp ;
            }
        }

        console.log(arr) ;
        //  2 3       2 3 4 1 6 5 22
        //  3 4       2 3 4 1 6 5 22
        //  4 1       2 3 1 4 6 5 22
        //  4 6       2 3 1 4 6 5 22
        //  6 5       2 3 1 4 5 6 22
        //  6和22     没必要比了   

        // 经过第二轮  最大值和第二大的值都在最后面       22 6
        

        // 第三轮
        for(var i = 0 ; i < arr.length - 1 - 2; i++) {    // 最后一个数不跟后面的比    经过第两轮比较，两个最大的一已经拍好了，没必要再比较
            // 当前这个数和后面的这个数进行比较
            if(arr[i] > arr[i + 1]) {
                // 前面的值比后面的大
                // 交换位置
                var temp = arr[i] ;
                arr[i] = arr[i + 1] ;
                arr[i + 1] = temp ;
            }
        }

        console.log(arr) ;

        // 2 3    2 3 1 4 5 6 22
        // 3 1    2 1 3 4 5 6 22
        // 3 4
        // 4 5
        // 5和6没必要再比较       

        // 经过第三轮  3个最大的数已经排到最后面的   22 6  5


        // 第四轮
        for(var i = 0 ; i < arr.length - 1 - 3; i++) {    // 最后一个数不跟后面的比    经过第三轮比较，三个最大的已经拍好了，没必要再比较
            // 当前这个数和后面的这个数进行比较
            if(arr[i] > arr[i + 1]) {
                // 前面的值比后面的大
                // 交换位置
                var temp = arr[i] ;
                arr[i] = arr[i + 1] ;
                arr[i + 1] = temp ;
            }
        }

        console.log(arr) ;
      
        // 2 1   1 2 3 4 5 6 22
        // 2 3
        // 3 4
        // 4和5不需要比较 


        // 经过第四轮的比较  最大的4个数已经拍好了


        // 第五轮


        // 第六轮  



        function bubbleSort(arr) {
            
            for(var j = 0 ; j < arr.length - 1 ; j++) {   // j 表示比较的轮数(比较的轮数少一次)
                for(var i = 0 ; i < arr.length - 1 - j; i++) {    // -1最后一个数不跟后面的比    -j比较了j轮之后，后面的j个数已经是最大的了，不需要再比较
                    // 当前这个数和后面的这个数进行比较
                    if(arr[i] > arr[i + 1]) {
                        // 前面的值比后面的大
                        // 交换位置
                        var temp = arr[i] ;
                        arr[i] = arr[i + 1] ;
                        arr[i + 1] = temp ;
                    }
                }
            }
            console.log(arr) ;
        }


        bubbleSort([5,4,3,2,1]) ;





        // 5 4 3 2 1

        // 相邻的两个数做比较，大的往后交换
        // 5和4  
        // 4 3
        // 3 2
        // 2 1
        // 1没人比



        // // 比较的轮数的   
        // for(var j = 0 ; j < arr.length - 1 ; j++) {

        //     // 相邻的两个数做比较，大的往后交换
        //     // -1 最后一个数没人比
        //     // -j 每一轮都拍好了一个最大的  最大的没必要比
        //     for(var i = 0 ; i < arr.length - 1 - j ; i++) {
        //         if(arr[i] > arr[i+1]){
        //             交换
        //         }
        //     }

        //     // 每一轮结束之后，拍好一个最大值
        // }


    </script>
    
</body>
</html>